package java_1_23;

/**
 * 坐标类
 */
//public class Point {
//    private Object x;
//    private Object y;
//
//    public Object getX() {
//        return x;
//    }
//
//    public void setX(Object x) {
//        this.x = x;
//    }
//
//    public Object getY() {
//        return y;
//    }
//
//    public void setY(Object y) {
//        this.y = y;
//    }
//
//    public static void main(String[] args) {
//        /**
//         * 在运行时出错--强转部分引起（类型转换异常）——克服方法：应用泛型类
//         */
//        Point point=new Point();
//        point.setX(10.1);
//        point.setY("北纬20度");
//        String x= (String) point.getX();
//        String y=(String) point.getY();
//        System.out.println("x="+x+" y="+y);
////        Point point=new Point();
////        //自动装箱-基本类型->包装类
////        point.setX(10.1);
////        point.setY(20.2);
////        //自动拆箱
////        double x=(double) point.getX();
////        double y=(double) point.getY();
////        System.out.println("x="+x+" y="+y);
////        Point point1=new Point();
////        point1.setX("东经101度");
////        point1.setY("北纬55度");
////        String x1= (String) point1.getX();
////        String y1=(String) point1.getY();
////        System.out.println("x1="+x1+" y1="+y1);
//    }
//}

/**
 * 泛型坐标类
 * 此时x,y是相同类型，使用一个类型参数（校验时就能发现出现类型错误）
 */
public class Point<T> {
    private T x;
    private T y;
    public T getX() {
        return x;
    }
    public void setX(T x) {
        this.x = x;
    }
    public T getY() {
        return y;
    }
    public void setY(T y) {
        this.y = y;
    }
    public static void main(String[] args) {
        Point<String> point=new Point<>();
        point.setX("东经120度");
        point.setY("北纬20度");
        String x= point.getX();
        String y= point.getY();
    }
}